{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import os\n",
    "os.chdir(\"E:\\pythonstudy\")\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.metrics import log_loss  \n",
    "from matplotlib import pyplot\n",
    "from sklearn.metrics import accuracy_score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "data=pd.read_csv('diabetes.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.cross_validation import train_test_split\n",
    "train, test = train_test_split(data, test_size = 0.2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#以上几个特征有一些为0，但是从实际的数据含义来看，这些特征不可能为0，故在训练集和测序集中均删除，\n",
    "#而怀孕次数为0是有实际意义的，Insulin为0的值太多，所以为避免0值对结果的影响，均加上0.00001\n",
    "\n",
    "train=train[train[\"BloodPressure\"]>0]\n",
    "train=train[train[\"Glucose\"]>0]\n",
    "train=train[train[\"BMI\"]>0]\n",
    "train=train[train[\"BloodPressure\"]>0]\n",
    "train[\"Pregnancies\"]+=1\n",
    "train[\"Insulin\"]+=0.001"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#以上几个特征有一些为0，但是从实际的数据含义来看，这些特征不可能为0，故在训练集和测序集中均删除，\n",
    "#而怀孕次数为0是有实际意义的，Insulin为0的值太多，所以为避免0值对结果的影响，均加上0.00001\n",
    "test=test[test[\"BloodPressure\"]>0]\n",
    "test=test[test[\"Glucose\"]>0]\n",
    "test=test[test[\"BMI\"]>0]\n",
    "test=test[test[\"BloodPressure\"]>0]\n",
    "test[\"Pregnancies\"]+=1\n",
    "test[\"Insulin\"]+=0.001"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "y_train = train['Outcome'].values  #将目标值y取出来，其他均为x\n",
    "X_train = train.drop('Outcome',axis =1)#drop函数默认删除行，列需要加axis = 1\n",
    "# 以上为训练集\n",
    "y_test = test['Outcome'].values  \n",
    "X_test = test.drop('Outcome',axis =1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# 数据标准化\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "\n",
    "# 初始化特征的标准化器\n",
    "ss_X = StandardScaler()\n",
    "\n",
    "# 分别对训练和测试数据的特征进行标准化处理\n",
    "X_train = ss_X.fit_transform(X_train)\n",
    "X_test = ss_X.transform(X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\model_selection\\_split.py:2026: FutureWarning: From version 0.21, test_size will always complement train_size unless both are specified.\n",
      "  FutureWarning)\n"
     ]
    }
   ],
   "source": [
    "#线性SVM\n",
    "#在校验集上测试，估计模型性能\n",
    "from sklearn.model_selection import train_test_split\n",
    "X_train_part, X_val, y_train_part, y_val = train_test_split(X_train, y_train, train_size = 0.8,random_state = 0)\n",
    "from sklearn.svm import LinearSVC\n",
    "SVC1 = LinearSVC().fit(X_train_part, y_train_part)\n",
    "from sklearn.svm import SVC\n",
    "\n",
    "y_predict = SVC1.predict(X_val)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def fit_grid_point_Linear(C, X_train, y_train, X_val, y_val):\n",
    "    \n",
    "    # 在训练集是那个利用SVC训练\n",
    "    SVC2 =  LinearSVC( C = C)\n",
    "    SVC2 = SVC2.fit(X_train, y_train)\n",
    "    \n",
    "    # 在校验集上返回accuracy\n",
    "    accuracy = SVC2.score(X_val, y_val)\n",
    "    \n",
    "    print(\"accuracy: {}\".format(accuracy))\n",
    "    return accuracy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "accuracy: 0.8017241379310345\n",
      "accuracy: 0.8103448275862069\n",
      "accuracy: 0.8103448275862069\n",
      "accuracy: 0.8103448275862069\n",
      "accuracy: 0.8103448275862069\n",
      "accuracy: 0.7844827586206896\n",
      "accuracy: 0.7758620689655172\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nrkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x27251fb3898>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "C_s = np.logspace(-3, 3, 7)# logspace(a,b,N)把10的a次方到10的b次方区间分成N份  \n",
    "#penalty_s = ['l1','l2']\n",
    "\n",
    "accuracy_s = []\n",
    "for i, oneC in enumerate(C_s):\n",
    "#    for j, penalty in enumerate(penalty_s):\n",
    "    tmp = fit_grid_point_Linear(oneC, X_train, y_train, X_val, y_val)\n",
    "    accuracy_s.append(tmp)\n",
    "\n",
    "x_axis = np.log10(C_s)\n",
    "#for j, penalty in enumerate(penalty_s):\n",
    "pyplot.plot(x_axis, np.array(accuracy_s), 'b-')\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'log(C)' )                                                                                                      \n",
    "pyplot.ylabel( 'accuracy' )\n",
    "pyplot.savefig('SVM_Otto.png' )\n",
    "\n",
    "pyplot.show()\n",
    "  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "线性SVM的结果明显比逻辑回归的结果要好，原因：\n",
    "1、逻辑回归模型需要大量的数据才能拟合的比较好，而这里只有几百个\n",
    "2、逻辑回归模型对异常点比较敏感，而这个数据集里面有很多按常识不可能出现0的都为0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#RBF核的SVM\n",
    "from sklearn.svm import SVC\n",
    "def fit_grid_point_RBF(C, gamma, X_train, y_train, X_val, y_val):\n",
    "    \n",
    "    # 在训练集是那个利用SVC训练\n",
    "    SVC3 =  SVC( C = C, kernel='rbf', gamma = gamma)\n",
    "    SVC3 = SVC3.fit(X_train, y_train)\n",
    "    \n",
    "    # 在校验集上返回accuracy\n",
    "    accuracy = SVC3.score(X_val, y_val)\n",
    "    \n",
    "    print(\"accuracy: {}\".format(accuracy))\n",
    "    return accuracy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "accuracy: 0.7155172413793104\n",
      "accuracy: 0.7155172413793104\n",
      "accuracy: 0.7155172413793104\n",
      "accuracy: 0.7155172413793104\n",
      "accuracy: 0.7155172413793104\n",
      "accuracy: 0.7155172413793104\n",
      "accuracy: 0.8793103448275862\n",
      "accuracy: 0.7155172413793104\n",
      "accuracy: 0.7155172413793104\n",
      "accuracy: 0.7155172413793104\n",
      "accuracy: 0.8448275862068966\n",
      "accuracy: 0.8706896551724138\n",
      "accuracy: 0.9913793103448276\n",
      "accuracy: 1.0\n",
      "accuracy: 1.0\n",
      "accuracy: 0.8448275862068966\n",
      "accuracy: 0.9310344827586207\n",
      "accuracy: 1.0\n",
      "accuracy: 1.0\n",
      "accuracy: 1.0\n",
      "accuracy: 0.8620689655172413\n",
      "accuracy: 0.9655172413793104\n",
      "accuracy: 1.0\n",
      "accuracy: 1.0\n",
      "accuracy: 1.0\n"
     ]
    }
   ],
   "source": [
    "#需要调优的参数\n",
    "C_s = np.logspace(-2, 2, 5)# logspace(a,b,N)把10的a次方到10的b次方区间分成N份 \n",
    "gamma_s = np.logspace(-2, 2, 5)  \n",
    "\n",
    "accuracy_s = []\n",
    "for i, oneC in enumerate(C_s):\n",
    "    for j, gamma in enumerate(gamma_s):\n",
    "        tmp = fit_grid_point_RBF(oneC, gamma, X_train, y_train, X_val, y_val)\n",
    "        accuracy_s.append(tmp)\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2725232c320>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "accuracy_s1 =np.array(accuracy_s).reshape(len(C_s),len(gamma_s))\n",
    "x_axis = np.log10(C_s)\n",
    "for j, gamma in enumerate(gamma_s):\n",
    "    pyplot.plot(x_axis, np.array(accuracy_s1[:,j]), label = ' Test - log(gamma)' + str(np.log10(gamma)))\n",
    "\n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'log(C)' )                                                                                                      \n",
    "pyplot.ylabel( 'accuracy' )\n",
    "pyplot.savefig('RBF_SVM_Otto.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
